#include<bits/stdc++.h>
#define M 10000
#define ll long long
using namespace std;
struct node{ll l,r;}A[1005];
bool cmp(node x,node y){
    if(x.l*x.r==y.l*y.r)return x.l>y.l;
    return x.l*x.r<y.l*y.r;
}
struct bignum{
    int num[1005];
    int len;
    bignum(){memset(num,0,sizeof num);len=1;}
    bignum operator *(ll x){
        bignum tmp;
        tmp.len=len;
        for(int i=1;i<=len;i++){
            tmp.num[i]+=num[i]*x;
            tmp.num[i+1]+=tmp.num[i]/M;
            tmp.num[i]%=M;
        }
        while(tmp.num[tmp.len+1])tmp.len++;
        return tmp;
    }
    bignum operator /(ll x){
        bignum tmp;
        tmp.len=len;
        for(int i=1;i<=len;i++)tmp.num[i]=num[i];
        for(int i=len;i>=1;i--){
            if(i>1)tmp.num[i-1]+=tmp.num[i]%x*M;
            tmp.num[i]=tmp.num[i]/x;
        }
        while(tmp.num[tmp.len]==0&&tmp.len>1)tmp.len--; 
        return tmp;
    }
    bool operator <(bignum x){
        if(len!=x.len)return len<x.len;
        for(int i=len;i>=1;i--)if(num[i]!=x.num[i])return num[i]<x.num[i];
        return 0;
    }
    void Print(){
        printf("%d",num[len]);
        for(int i=len-1;i>=1;i--)printf("%04d",num[i]);
        puts("");
    }
};
int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<=n;i++)scanf("%lld%lld",&A[i].l,&A[i].r);
    sort(A+1,A+1+n,cmp);
    bignum h,mx;h.num[1]=1;h=h*A[0].l;
    for(int i=1;i<=n;i++){
        if(mx<h/A[i].r)mx=h/A[i].r;
        h=h*A[i].l;
    }
    mx.Print();
    return 0;
}
